home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xml / SOX2Writer$ElemProxy.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  5.6 KB  |  191 lines

  1. package com.extensibility.xml;
  2.  
  3. public class SOX2Writer$ElemProxy extends SOX2Writer.DeclProxy {
  4.    // $FF: synthetic field
  5.    final SOX2Writer this$0;
  6.    ElementDeclaration decl;
  7.    SOX2Writer.AttrProxy attrProxy;
  8.  
  9.    SOX2Writer$ElemProxy(SOX2Writer var1) {
  10.       super(var1);
  11.       this.this$0 = var1;
  12.       this.attrProxy = new SOX2Writer.AttrProxy(this.this$0);
  13.    }
  14.  
  15.    SOX2Writer$ElemProxy(SOX2Writer var1, ElementDeclaration var2) {
  16.       super(var1);
  17.       this.this$0 = var1;
  18.       this.attrProxy = new SOX2Writer.AttrProxy(this.this$0);
  19.       this.setDecl(var2);
  20.    }
  21.  
  22.    void setDecl(ElementDeclaration var1) {
  23.       this.decl = var1;
  24.       super.setDecl(var1);
  25.    }
  26.  
  27.    public void write(SXE var1, boolean var2) {
  28.       SOX2Writer.access$2000171(this.this$0, var1, this.decl);
  29.       var1.writeElem("elementtype");
  30.       var1.writeAttr("name", this.decl.getName());
  31.       ((SOX2Writer.DeclProxy)this).writeMetaProps(var1);
  32.       if (var2) {
  33.          ((SOX2Writer.DeclProxy)this).writeComments(var1);
  34.       }
  35.  
  36.       ContentModel var3 = this.decl.getContentModel();
  37.       if (!var3.isEmpty() && (!var3.isTagsOnly() || ((ContentModelTerm)var3).getLeafCount() != 0) && (!var3.isMixed() || ((ContentModelTerm)var3).getLeafCount() != 1)) {
  38.          boolean var5 = false;
  39.       } else {
  40.          boolean var10000 = true;
  41.       }
  42.  
  43.       if (this.decl.getSuperType() != null) {
  44.          var1.writeElem("extends", -1);
  45.          var1.writeAttr("type", this.decl.getSuperType().getNCName());
  46.          if (this.decl.getSuperType().getPrefix() != null) {
  47.             var1.writeAttr("prefix", this.decl.getSuperType().getPrefix());
  48.          }
  49.  
  50.          if (!this.hasNoTerms(var3)) {
  51.             var1.writeElem("append", -1);
  52.             this.writeModelTerm(var1, var3);
  53.             var1.flush("append");
  54.          }
  55.       } else {
  56.          this.writeModel(var1, var3);
  57.       }
  58.  
  59.       this.this$0.writeAttrGroup(var1, this.decl.getAttributes(true), this.attrProxy);
  60.       var1.flush("elementtype");
  61.    }
  62.  
  63.    boolean hasNoTerms(ContentModel var1) {
  64.       return var1.isEmpty() || var1.isAny() || var1.isTagsOnly() && ((ContentModelTerm)var1).getLeafCount() == 0 || var1.isMixed() && ((ContentModelTerm)var1).getLeafCount() == 1;
  65.    }
  66.  
  67.    void writeModel(SXE var1, ContentModel var2) {
  68.       if (this.hasNoTerms(var2)) {
  69.          var1.writeElem("empty", true);
  70.       } else if (var2.isTextOnly()) {
  71.          var1.writeElem("model", -1);
  72.          var1.writeElem("string", true);
  73.          if (this.decl.getDataType() != null) {
  74.             SOX2Writer.access$2000371(this.this$0, var1, this.decl.getDataType(), false);
  75.          }
  76.  
  77.          var1.flush("model");
  78.       } else if (var2.isMixed()) {
  79.          var1.writeElem("model", -1);
  80.          var1.writeElem("choice", -1);
  81.          ContentModelTermEnum var3 = ((ContentModelTerm)var2).getTerms(true);
  82.  
  83.          while(var3.hasMoreElements()) {
  84.             ContentModelTerm var4 = (ContentModelTerm)var3.nextElement();
  85.             if (!var4.isPCDATATerm()) {
  86.                this.writeModelTerm(var1, var4);
  87.             }
  88.          }
  89.  
  90.          var1.flush("choice");
  91.          var1.flush("model");
  92.       } else if (var2.isTagsOnly()) {
  93.          var1.writeElem("model", -1);
  94.          this.writeModelTerm(var1, var2);
  95.          var1.flush("model");
  96.       }
  97.  
  98.    }
  99.  
  100.    void writeModelTerms(SXE var1, ContentModelTermEnum var2) {
  101.       while(var2.hasMoreElements()) {
  102.          this.writeModelTerm(var1, var2.nextContentModelTerm());
  103.       }
  104.  
  105.    }
  106.  
  107.    private int countTerms(ContentModelTerm var1) {
  108.       ContentModelTermEnum var2 = var1.getTerms(true);
  109.  
  110.       int var3;
  111.       for(var3 = 0; var2.hasMoreElements(); ++var3) {
  112.          ContentModelTerm var4 = (ContentModelTerm)var2.nextElement();
  113.       }
  114.  
  115.       return var3;
  116.    }
  117.  
  118.    boolean skipRootGroup(ContentModel var1) {
  119.       ContentModelTerm var2 = var1.getRootGroup();
  120.       if (var2 == null) {
  121.          return false;
  122.       } else if (var2.getOccurance() == 0 && var2.getLocalTag() == null) {
  123.          if (this.countTerms(var2) != 1) {
  124.             return false;
  125.          } else {
  126.             return !var2.firstTerm().isGroup();
  127.          }
  128.       } else {
  129.          return false;
  130.       }
  131.    }
  132.  
  133.    void writeModelTerm(SXE var1, ContentModelTerm var2) {
  134.       if (var2 instanceof ContentModel) {
  135.          ContentModelTerm var3 = ((ContentModel)var2).getRootGroup();
  136.          if (this.skipRootGroup((ContentModel)var2)) {
  137.             this.writeModelTerms(var1, var3.getTerms(true));
  138.          } else {
  139.             this.writeModelTerms(var1, var2.getTerms(true));
  140.          }
  141.       } else if (var2.isGroup()) {
  142.          int var7 = this.countTerms(var2);
  143.          String var4 = null;
  144.          if (var7 > 1) {
  145.             var4 = var2.getChildConnection() == ',' ? "sequence" : "choice";
  146.             var1.writeElem(var4, -1);
  147.             if (var2.getLocalTag() != null) {
  148.                var1.writeAttr("name", var2.getLocalTag());
  149.             }
  150.  
  151.             if (var2.getOccurance() != 0) {
  152.                var1.writeAttr("occurs", var2.getOccuranceAsString(true, true));
  153.             }
  154.          }
  155.  
  156.          this.writeModelTerms(var1, var2.getTerms(true));
  157.          if (var7 > 1) {
  158.             var1.flush(var4);
  159.          }
  160.       } else if (!var2.isPCDATATerm()) {
  161.          var1.writeElem("element", true);
  162.          Object var8 = null;
  163.          String var9;
  164.          if (var2.getTermRef() != null && var2.getTermRef().isQualified()) {
  165.             var9 = this.this$0.getQName(var2.getTerm(), Class.forName("com.extensibility.xml.ElementDeclaration"));
  166.          } else {
  167.             var9 = var2.getTerm();
  168.          }
  169.  
  170.          String var10 = var2.getLocalTag();
  171.          if (var10 != null && var10.length() > 0) {
  172.             var1.writeAttr("name", var10);
  173.          }
  174.  
  175.          if (var9.indexOf(":") > 0) {
  176.             String var5 = var9.substring(0, var9.indexOf(":"));
  177.             String var6 = var9.substring(var9.indexOf(":") + 1);
  178.             var1.writeAttr("type", var6);
  179.             var1.writeAttr("prefix", var5);
  180.          } else {
  181.             var1.writeAttr("type", var9);
  182.          }
  183.  
  184.          if (var2.getOccurance() != 0) {
  185.             var1.writeAttr("occurs", var2.getOccuranceAsString(true, true));
  186.          }
  187.       }
  188.  
  189.    }
  190. }
  191.